import { login, getProfile, getUserDetail } from '@/api/user'
// import Cookie from 'js-cookie'

const state = {
  userInfo: {},
  token: localStorage.getItem('token') || ''
  // token: Cookie.get('token') || ''
}
const mutations = {
  setToken(state, token) {
    state.token = token
    // 备份持久数据
    localStorage.setItem('token', token)
    // Cookie.set('token', token)
  },
  setUserInfo(state, userInfo) {
    state.userInfo = userInfo
  },
  removeToken(state) {
    // 由于 token 数据除了用在state还储存在 localStorage
    // 所以要一并清除
    state.token = ''
    localStorage.removeItem('token')
  },
  removeUserInfo(state) {
    state.userInfo = {}
  }
}
const actions = {
  // 这个登录actions调用时,应该传入用户填写的表单, 手机号用户名
  async login(store, loginForm) {
    const res = await login(loginForm)
    store.commit('setToken', res)
    // 登录成功, 除了触发 token 记录以外, 还要注意记录时间
    // 方便下次发送请求时, 校验时间是否超时
    localStorage.setItem('timestamp', Date.now())
    console.log('actions 正在调用')
  },
  async getUserInfo(store) {
    // profile 是登陆用户的基本信息, 比较简单
    const res = await getProfile()
    // 这里获取基本信息差用户头像, 可以用这个接口拿到的 id 数据
    // 继续获取后续接口, 拼接起来, 形成完整数据
    const detail = await getUserDetail(res.userId)
    store.commit('setUserInfo', {
      ...res,
      ...detail,
      staffPhoto: 'http://baidu.com/hahahaheihei.jpg'
    })
  },
  logout(store) {
    store.commit('removeToken')
    store.commit('removeUserInfo')
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
